.TH UDPREAD 3
.SH NAME
udpread, udpwrite \- read and write UDP packets
.SH SYNOPSIS
.B #include <u.h>
.PP
.B #include <libc.h>
.PP
.B #include <ip.h>
.PP
.B 
.nf
.ta +4n +8n
typedef struct Udphdr Udphdr;
struct Udphdr
{
	uchar	raddr[IPaddrlen];	/* remote address and port */
	uchar	laddr[IPaddrlen];	/* local address and port */
	uchar	rport[2];
	uchar	lport[2];
};
.PP
.B
long	udpread(int fd, Udphdr *hdr, void *data, long n)
.PP
.B
long udpwrite(int fd, Udphdr *hdr, void *data, long n)
.SH DESCRIPTION
.I Udpread
and
.I udpwrite
read and write UDP packets from the UDP network connection
established on file descriptor
.IR fd .
.PP
.I Udpread
reads at most
.I n
bytes of packet body into
.I data ,
stores the header in
.IR hdr ,
and returns the number of bytes stored in
.IR data .
.PP
.I Udpwrite
writes the
.I n
bytes stored in 
.I data
in a UDP packet with header
.IR hdr .
.PP
Note that the
.B Udphdr
frames the addresses as local and remote
instead of source and destination.
Thus the
.I hdr
filled in for a packet read by
.I udpread
can be used unchanged in
.I udpwrite
to send a response back to the sender of the original packet.
.SH SOURCE
.B \*9/src/lib9/udp.c
.SH SEE ALSO
.IR ip (3)
